﻿Imports Commander_Wars.Spieletools
#Region "Will"
''' <summary>
''' Wird zu erstellen des KO's Will verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOWill
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "WILL"
        Armee = Armeen.OS.ToString
        Musik = "Will"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 6
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 2
            Case Else
                Sternkosten = 1000
                Gabekosten = 3
                SpezialgabeKosten = 3
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Bewegungsbonus = Nothing
                OffensivStärke = New FeuerkrafttabellePanzer120OhneSchwäche
                If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
                    'Dafür sinkt die Feuerkraft aber drastisch
                    WetterReichweitenbonus(0) = 0
                End If
            Case Else
                Bewegungsbonus = Nothing
                OffensivStärke = New FeuerkrafttabellePanzer110OhneSchwäche
                If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
                    'Dafür sinkt die Feuerkraft aber drastisch
                    WetterReichweitenbonus(0) = 0
                End If
        End Select

    End Sub

    Public Overrides Function GetBaublockade(ByVal Spieler As Integer) As Baublockade
        Return New Baublockade(Baublockade.BauBlockade.Ground, Spieler)
    End Function

    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        OffensivStärke = New FeuerkrafttabellePanzer120OhneSchwäche
        If OhneFunktion = False Then
            AnimationEigenePanzer("MAXGABE", 2)
        End If
        Bewegungsbonus = New BewegungsboniTabellePanzer_1
        GabeEingesetzt()
    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                OffensivStärke = New FeuerkrafttabellePanzer120OhneSchwäche
                If OhneFunktion = False Then
                    AnimationEigenePanzer("MAXGABE", 2)
                End If
                Bewegungsbonus = New BewegungsboniTabellePanzer_1
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                If OhneFunktion = False Then
                    AnimationEigenePanzer("SPEZIALGABE", 2)
                End If
                Bewegungsbonus = New BewegungsboniTabellePanzer_2
            Case Else
                OffensivStärke = New FeuerkrafttabellePanzer140OhneSchwäche
                If OhneFunktion = False Then
                    AnimationEigenePanzer("SPEZIALGABE", 2)
                End If
                Bewegungsbonus = New BewegungsboniTabellePanzer_2
        End Select


        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        'Wir machen nichts
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungWill
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Will"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Panzer sind stärker."}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {"Panzer können 2 Felder laufen."}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"Neue Zeit", "Neue Ära"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Brenner"
''' <summary>
''' Wird zu erstellen des KO's Brenner verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOBrenner
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "BRENNER"
        Armee = Armeen.OS.ToString
        Musik = "Brenner"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 6
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 3
            Case Else
                Sternkosten = 1000
                Gabekosten = 4
                SpezialgabeKosten = 3
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Zusatzdeffensive.X = 20
                Zusatzdeffensive.Y = 20
            Case Else
                Zusatzdeffensive.X = 10
                Zusatzdeffensive.Y = 5
        End Select

        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
            'Dafür sinkt die Feuerkraft aber drastisch
            WetterReichweitenbonus(0) = 0
        End If
    End Sub

    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Zusatzdeffensive.X = 20
        Zusatzdeffensive.Y = 20
        If OhneFunktion = False Then
            EigeneEinheitenHeilen(2)
            AnimationEigenePanzer("ANDYGABE", 2)
        End If

        GabeEingesetzt()
    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Zusatzdeffensive.X = 20
                Zusatzdeffensive.Y = 20
                If OhneFunktion = False Then
                    EigeneEinheitenHeilen(2)
                    AnimationEigenePanzer("ANDYGABE", 2)
                End If
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                If OhneFunktion = False Then
                    EigeneEinheitenHeilen(3)
                    AnimationEigenePanzer("SPEZIALGABE", 2)
                End If
            Case Else
                Zusatzdeffensive.X = 30
                Zusatzdeffensive.Y = 30
                If OhneFunktion = False Then
                    EigeneEinheitenHeilen(5)
                    AnimationEigenePanzer("ANDYGABE", 2)
                End If

        End Select
        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        'Wir machen nichts
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungBrenner
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Brenner"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Starke Verteidigung."}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {"3 TP Heilung."}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"Reperatur", "Wieder Aufbau"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Lin"
''' <summary>
''' Wird zu erstellen des KO's Lin verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOLin
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "LIN"
        Armee = Armeen.OS.ToString
        Musik = "Lin"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 6
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 1
            Case Else
                Sternkosten = 1000
                Gabekosten = 3
                SpezialgabeKosten = 3
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                DeffensivStärke = New FeuerkrafttabelleBoden120
                OffensivStärke = New FeuerkrafttabelleBoden120
                Sichtbonus = 0
                RiffWaldSchauer = False
            Case Else
                DeffensivStärke = New FeuerkrafttabelleBoden105
                OffensivStärke = New FeuerkrafttabelleBoden110
                Sichtbonus = 0
                RiffWaldSchauer = False
        End Select


        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
            'Dafür sinkt die Feuerkraft aber drastisch
            WetterReichweitenbonus(0) = 0
        End If
    End Sub

    Public Overrides Function GetBaublockade(ByVal Spieler As Integer) As Baublockade
        Return New Baublockade(Baublockade.BauBlockade.Ground, Spieler)
    End Function

    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Sichtbonus = 1
        RiffWaldSchauer = True
        DeffensivStärke = New FeuerkrafttabelleBoden110
        OffensivStärke = New FeuerkrafttabelleBoden120
        If OhneFunktion = False Then
            BackbufferSpiel.AddAnimation("SCREENFLASH", 0, New Point, True, ObjektSpielfeld.TopLayer)
        End If

        GabeEingesetzt()
    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sichtbonus = 1
                RiffWaldSchauer = True
                DeffensivStärke = New FeuerkrafttabelleBoden110
                OffensivStärke = New FeuerkrafttabelleBoden120
                If OhneFunktion = False Then
                    BackbufferSpiel.AddAnimation("SCREENFLASH", 0, New Point, True, ObjektSpielfeld.TopLayer)
                End If
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Sichtbonus = 2
                RiffWaldSchauer = True
                If OhneFunktion = False Then
                    BackbufferSpiel.AddAnimation("SCREENFLASH", 0, New Point, True, ObjektSpielfeld.TopLayer)
                End If
            Case Else
                Sichtbonus = 2
                RiffWaldSchauer = True
                DeffensivStärke = New FeuerkrafttabelleBoden120
                OffensivStärke = New FeuerkrafttabelleBoden130
                If OhneFunktion = False Then
                    BackbufferSpiel.AddAnimation("SCREENFLASH", 0, New Point, True, ObjektSpielfeld.TopLayer)
                End If
        End Select



        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        'Wir machen nichts
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungLin
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Lin"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Starke Bodentruppen."}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {"Sicht steigt."}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"Späher", "Kundschafter"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Isabella"
''' <summary>
''' Wird zu erstellen des KO's Isabella verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOIsabella
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "ISABELLA"
        Armee = Armeen.OS.ToString
        Musik = "Isabella"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 6
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 2
            Case Else
                Sternkosten = 1000
                Gabekosten = 4
                SpezialgabeKosten = 2
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()
        DeffensivStärke = New Feuerkrafttabelle110
        OffensivStärke = Nothing
        Reichweite = 0
        Bewegungsbonus = Nothing
        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
            'Dafür sinkt die Feuerkraft aber drastisch
            WetterReichweitenbonus(0) = 0
        End If
    End Sub

    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        DeffensivStärke = New Feuerkrafttabelle110
        OffensivStärke = New Feuerkrafttabelle110
        Reichweite = 1
        Bewegungsbonus = New BewegungsboniTabelleFern_1
        If OhneFunktion = False Then
            AnimationEigeneFernkampf("KIDGABE", 2)
        End If
        GabeEingesetzt()
    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                DeffensivStärke = New Feuerkrafttabelle110
                OffensivStärke = New Feuerkrafttabelle110
                Reichweite = 1
                Bewegungsbonus = New BewegungsboniTabelleFern_1
                If OhneFunktion = False Then
                    AnimationEigeneFernkampf("KIDGABE", 2)
                End If
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Reichweite = 2
                Bewegungsbonus = New BewegungsboniTabelleFern_2
                If OhneFunktion = False Then
                    AnimationEigeneFernkampf("SPEZIALGABE", 2)
                End If
            Case Else
                DeffensivStärke = New Feuerkrafttabelle120
                OffensivStärke = New Feuerkrafttabelle120
                Reichweite = 2
                Bewegungsbonus = New BewegungsboniTabelleFern_2
                If OhneFunktion = False Then
                    AnimationEigeneFernkampf("KIDGABE", 2)
                End If
        End Select


        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        'Wir machen nichts
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungIsabella
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Isabella"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Allgemeiner Boost."}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {"Fernwaffen sind besser."}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"Fester Schlag", "Tiefer Schlag"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Tasha"
''' <summary>
''' Wird zu erstellen des KO's Tasha verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOTasha
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "TASHA"
        Armee = Armeen.BM.ToString
        Musik = "Tasha"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 6
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 1
            Case Else
                Sternkosten = 1000
                Gabekosten = 4
                SpezialgabeKosten = 3
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                DeffensivStärke = New FeuerkrafttabelleLuft120OhneSchwäche
                OffensivStärke = New FeuerkrafttabelleLuft140OhneSchwäche
                Bewegungsbonus = Nothing
            Case Else
                DeffensivStärke = Nothing
                OffensivStärke = New FeuerkrafttabelleLuft120OhneSchwäche
                Bewegungsbonus = Nothing
        End Select
        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
            'Dafür sinkt die Feuerkraft aber drastisch
            WetterReichweitenbonus(0) = 0
        End If
    End Sub

    Public Overrides Function GetBaublockade(ByVal Spieler As Integer) As Baublockade
        Return New Baublockade(Baublockade.BauBlockade.Air, Spieler)
    End Function

    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        DeffensivStärke = New FeuerkrafttabelleLuft110OhneSchwäche
        OffensivStärke = New FeuerkrafttabelleLuft130OhneSchwäche
        Bewegungsbonus = New BewegungsboniTabelleLuft_1
        If OhneFunktion = False Then
            AnimationEigeneLuftkampf("EAGLEGABE", 2)
        End If
        GabeEingesetzt()
    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                DeffensivStärke = New FeuerkrafttabelleLuft110OhneSchwäche
                OffensivStärke = New FeuerkrafttabelleLuft130OhneSchwäche
                Bewegungsbonus = New BewegungsboniTabelleLuft_1
                If OhneFunktion = False Then
                    AnimationEigeneLuftkampf("EAGLEGABE", 2)
                End If
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Bewegungsbonus = New BewegungsboniTabelleLuft_2
                If OhneFunktion = False Then
                    AnimationEigeneLuftkampf("SPEZIALGABE", 2)
                End If
            Case Else
                DeffensivStärke = New FeuerkrafttabelleLuft130OhneSchwäche
                OffensivStärke = New FeuerkrafttabelleLuft140OhneSchwäche
                Bewegungsbonus = New BewegungsboniTabelleLuft_2
                If OhneFunktion = False Then
                    AnimationEigeneLuftkampf("EAGLEGABE", 2)
                End If
        End Select
        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        'Wir machen nichts
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungTasha
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Tasha"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Starke Luftwaffe"}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {"Luftwaffe zieht weiter."}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"Sonic Flash", "Sonic Boom"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Gage"
''' <summary>
''' Wird zu erstellen des KO's Gage verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOGage
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "GAGE"
        Armee = Armeen.BM.ToString
        Musik = "Gage"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 6
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 2
            Case Else
                Sternkosten = 1000
                Gabekosten = 4
                SpezialgabeKosten = 3
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                DeffensivStärke = New FeuerkrafttabelleFernkampf_See_110
                OffensivStärke = New FeuerkrafttabelleFernkampf_See_120
                Reichweite = 0
            Case Else
                DeffensivStärke = Nothing
                OffensivStärke = New FeuerkrafttabelleFernkampf_See_110
                Reichweite = 0
        End Select
        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
            'Dafür sinkt die Feuerkraft aber drastisch
            WetterReichweitenbonus(0) = 0
        End If
    End Sub

    Public Overrides Function GetBaublockade(ByVal Spieler As Integer) As Baublockade
        Return New Baublockade(Baublockade.BauBlockade.IndirectSea, Spieler)
    End Function

    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        DeffensivStärke = New FeuerkrafttabelleFernkampf_See_110
        OffensivStärke = New FeuerkrafttabelleFernkampf_See_120
        Reichweite = 1
        If OhneFunktion = False Then
            AnimationEigeneFernkampf("KIDGABE", 2)
        End If
        GabeEingesetzt()
    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                DeffensivStärke = New FeuerkrafttabelleFernkampf_See_110
                OffensivStärke = New FeuerkrafttabelleFernkampf_See_120
                Reichweite = 1
                If OhneFunktion = False Then
                    AnimationEigeneFernkampf("KIDGABE", 2)
                End If
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Reichweite = 2
                If OhneFunktion = False Then
                    AnimationEigeneFernkampf("SPEZIALGABE", 2)
                End If
            Case Else
                DeffensivStärke = New FeuerkrafttabelleFernkampf_See_130
                OffensivStärke = New FeuerkrafttabelleFernkampf_See_140
                Reichweite = 2
                If OhneFunktion = False Then
                    AnimationEigeneFernkampf("SPEZIALGABE", 2)
                End If
        End Select
        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        'Wir machen nichts
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungGage
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Gage"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Starke See und Fernwaffe"}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {"Reichweitenboost."}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"Sonic Flash", "Sonic Boom"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Carter"
''' <summary>
''' Wird zu erstellen des KO's Carter verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOCarter
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "CARTER"
        Armee = Armeen.BM.ToString
        Musik = "Carter"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 0
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 5
            Case CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 3
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 5
            Case Else
                Sternkosten = 1000
                Gabekosten = 3
                SpezialgabeKosten = 3
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                DeffensivStärke = New Feuerkrafttabelle110
                OffensivStärke = New Feuerkrafttabelle110
                Reichweite = 0
            Case Else
                DeffensivStärke = New Feuerkrafttabelle110
                OffensivStärke = New Feuerkrafttabelle110
                Reichweite = 0
        End Select

        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
            'Dafür sinkt die Feuerkraft aber drastisch
            WetterReichweitenbonus(0) = 0
        End If
    End Sub



    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        DeffensivStärke = New Feuerkrafttabelle120
        OffensivStärke = New Feuerkrafttabelle120
        If OhneFunktion = False Then
            AnimationEigeneLuftkampf("KANBEIGABE", 2)
        End If
        GabeEingesetzt()
    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                DeffensivStärke = New Feuerkrafttabelle120
                OffensivStärke = New Feuerkrafttabelle120
                If OhneFunktion = False Then
                    AnimationEigeneLuftkampf("KANBEIGABE", 2)
                End If
            Case Else
                DeffensivStärke = New Feuerkrafttabelle140
                OffensivStärke = New Feuerkrafttabelle140
                If OhneFunktion = False Then
                    AnimationEigeneLuftkampf("SPEZIALGABE", 2)
                End If
        End Select
        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        'Wir machen nichts
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungCarter
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Carter"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Allgemeiner Boost"}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {""}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"Energieschub", "Superkraft"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Waylon"
''' <summary>
''' Wird zu erstellen des KO's Waylon verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOWaylon
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "WAYLON"
        Armee = Armeen.YC.ToString
        Musik = "Waylon"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 6
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 2
            Case Else
                Sternkosten = 1000
                Gabekosten = 4
                SpezialgabeKosten = 3
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                DeffensivStärke = New FeuerkrafttabelleLuft120OhneSchwäche
                OffensivStärke = New FeuerkrafttabelleLuft110OhneSchwäche
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                DeffensivStärke = New FeuerkrafttabelleLuft130OhneSchwäche
                OffensivStärke = New FeuerkrafttabelleLuft120OhneSchwäche
            Case Else
                DeffensivStärke = New FeuerkrafttabelleLuft120OhneSchwäche
                OffensivStärke = New FeuerkrafttabelleLuft110OhneSchwäche
        End Select

        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
            'Dafür sinkt die Feuerkraft aber drastisch
            WetterReichweitenbonus(0) = 0
        End If
    End Sub

    Public Overrides Function GetBaublockade(ByVal Spieler As Integer) As Baublockade
        Return New Baublockade(Baublockade.BauBlockade.Air, Spieler)
    End Function

    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        DeffensivStärke = New FeuerkrafttabelleLuft270OhneSchwäche
        If OhneFunktion = False Then
            AnimationEigeneLuftkampf("KANBEIGABE", 2)
        End If
        GabeEingesetzt()
    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                DeffensivStärke = New FeuerkrafttabelleLuft270OhneSchwäche
                If OhneFunktion = False Then
                    AnimationEigeneLuftkampf("KANBEIGABE", 2)
                End If
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                DeffensivStärke = New FeuerkrafttabelleLuft270OhneSchwäche
                If OhneFunktion = False Then
                    AnimationEigeneLuftkampf("SPEZIALGABE", 2)
                End If
            Case Else
                DeffensivStärke = New FeuerkrafttabelleLuft320OhneSchwäche
                OffensivStärke = New FeuerkrafttabelleLuft120OhneSchwäche
                If OhneFunktion = False Then
                    AnimationEigeneLuftkampf("SPEZIALGABE", 2)
                End If
        End Select
        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        'Wir machen nichts
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungWaylon
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Waylon"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Starke Luftwaffe"}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {""}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"Flugschlag", "Flügelmann"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Greyfield"
''' <summary>
''' Wird zu erstellen des KO's Greyfield verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOGreyfield
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "GREYFIELD"
        Armee = Armeen.YC.ToString
        Musik = "Greyfield"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 6
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 3
            Case Else
                Sternkosten = 1000
                Gabekosten = 3
                SpezialgabeKosten = 3
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                DeffensivStärke = New FeuerkrafttabelleLuft_See_140
                OffensivStärke = New FeuerkrafttabelleLuft_See_110
            Case Else
                DeffensivStärke = New FeuerkrafttabelleLuft_See_120
                OffensivStärke = Nothing
        End Select
        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
            'Dafür sinkt die Feuerkraft aber drastisch
            WetterReichweitenbonus(0) = 0
        End If
    End Sub

    Public Overrides Function GetBaublockade(ByVal Spieler As Integer) As Baublockade
        Return New Baublockade(Baublockade.BauBlockade.AirSea, Spieler)
    End Function

    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        DeffensivStärke = New FeuerkrafttabelleLuft_See_140
        OffensivStärke = New FeuerkrafttabelleLuft_See_110
        If OhneFunktion = False Then
            VollRation()
            AnimationEigeneLuftkampf("SPEZIALGABE", 2)
        End If
    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                DeffensivStärke = New FeuerkrafttabelleLuft_See_140
                OffensivStärke = New FeuerkrafttabelleLuft_See_110
                If OhneFunktion = False Then
                    VollRation()
                    AnimationEigeneLuftkampf("SPEZIALGABE", 2)
                End If
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                If OhneFunktion = False Then
                    VollRation()
                    AnimationEigeneLuftkampf("SPEZIALGABE", 2)
                End If
            Case Else
                DeffensivStärke = New FeuerkrafttabelleLuft_See_160
                OffensivStärke = New FeuerkrafttabelleLuft_See_120
                If OhneFunktion = False Then
                    VollRation()
                    AnimationEigeneLuftkampf("SPEZIALGABE", 2)
                End If
        End Select
        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        'Wir machen nichts
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungGreyfield
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Greyfield"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Starke See und Luftwaffe"}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {"Ration!"}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"Auffüllung", "Rationsregen"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Penny"
''' <summary>
''' Wird zu erstellen des KO's Penny verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOPenny
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "PENNY"
        Armee = Armeen.BH.ToString
        Musik = "Penny"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 6
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 3
            Case Else
                Sternkosten = 1000
                Gabekosten = 4
                SpezialgabeKosten = 3
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()
        Wetterimmunität = New ObjektSpielfeld.Wetterarten() {ObjektSpielfeld.Wetterarten.Sandsturm, ObjektSpielfeld.Wetterarten.Regen, ObjektSpielfeld.Wetterarten.Schnee}
        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
            'Dafür sinkt die Feuerkraft aber drastisch
            WetterReichweitenbonus(0) = 0
        End If
    End Sub

    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        If OhneFunktion = False Then
            Select Case Zufallszahl(0, 2)
                Case 0
                    WetterÄndern(ObjektSpielfeld.Wetterarten.Regen, 3)
                Case 1
                    WetterÄndern(ObjektSpielfeld.Wetterarten.Schnee, 3)
                Case 2
                    WetterÄndern(ObjektSpielfeld.Wetterarten.Sandsturm, 3)
            End Select
            BackbufferSpiel.AddAnimation("SCREENFLASH", 0, New Point, True, ObjektSpielfeld.TopLayer)
        End If
        GabeEingesetzt()
    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                If OhneFunktion = False Then
                    Select Case Zufallszahl(0, 2)
                        Case 0
                            WetterÄndern(ObjektSpielfeld.Wetterarten.Regen, 3)
                        Case 1
                            WetterÄndern(ObjektSpielfeld.Wetterarten.Schnee, 3)
                        Case 2
                            WetterÄndern(ObjektSpielfeld.Wetterarten.Sandsturm, 3)
                    End Select
                    BackbufferSpiel.AddAnimation("SCREENFLASH", 0, New Point, True, ObjektSpielfeld.TopLayer)
                End If
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                If OhneFunktion = False Then
                    Select Case Zufallszahl(0, 2)
                        Case 0
                            WetterÄndern(ObjektSpielfeld.Wetterarten.Regen, 3)
                        Case 1
                            WetterÄndern(ObjektSpielfeld.Wetterarten.Schnee, 3)
                        Case 2
                            WetterÄndern(ObjektSpielfeld.Wetterarten.Sandsturm, 3)
                    End Select
                    BackbufferSpiel.AddAnimation("SCREENFLASH", 0, New Point, True, ObjektSpielfeld.TopLayer)
                End If
            Case Else
                If OhneFunktion = False Then
                    Dim WZeit As Integer = 2
                    AnimationFeindliche("SPEZIALGABE", WZeit)
                    BackbufferSpiel.AddAnimation("SCREENFLASH", 0, New Point, True, ObjektSpielfeld.TopLayer)
                    AlleFeindeBeschädigen(2)
                    Select Case Zufallszahl(0, 2)
                        Case 0
                            WetterÄndern(ObjektSpielfeld.Wetterarten.Regen, 3)
                        Case 1
                            WetterÄndern(ObjektSpielfeld.Wetterarten.Schnee, 3)
                        Case 2
                            WetterÄndern(ObjektSpielfeld.Wetterarten.Sandsturm, 3)
                    End Select
                End If
        End Select

        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        'Wir machen nichts
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungPenny
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Penny"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Wetter immunität"}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {"Zufallswetter!"}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"Wetterfront", "Sturmfront"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Tabitha"
''' <summary>
''' Wird zu erstellen des KO's Tabitha verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOTabitha
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "TABITHA"
        Armee = Armeen.BH.ToString
        Musik = "Tabitha"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 6
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 0
            Case Else
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 9
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 0
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                OffensivStärke = New Feuerkrafttabelle150
                DeffensivStärke = New Feuerkrafttabelle150
                If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
                    'Dafür sinkt die Feuerkraft aber drastisch
                    WetterReichweitenbonus(0) = 0
                End If
            Case Else
                OffensivStärke = New FeuerkrafttabelleTeureEinheiten
                DeffensivStärke = New FeuerkrafttabelleTeureEinheitenDeffensive
                If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC Then
                    'Dafür sinkt die Feuerkraft aber drastisch
                    WetterReichweitenbonus(0) = 0
                End If
        End Select

    End Sub

    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)

    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                If OhneFunktion = False Then
                    Rakete(4, "RAKETE", 2, Effekte.Keiner)
                    BackbufferSpiel.AddAnimation("SCREENFLASH", 0, New Point, True, ObjektSpielfeld.TopLayer)
                End If
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                If OhneFunktion = False Then
                    Rakete(8, "RAKETE", 2, Effekte.Keiner)
                    BackbufferSpiel.AddAnimation("SCREENFLASH", 0, New Point, True, ObjektSpielfeld.TopLayer)
                End If
            Case Else
                OffensivStärke = New Feuerkrafttabelle140
                DeffensivStärke = New Feuerkrafttabelle140
                If OhneFunktion = False Then
                    Rakete(8, "RAKETE", 2, Effekte.Keiner)
                    BackbufferSpiel.AddAnimation("SCREENFLASH", 0, New Point, True, ObjektSpielfeld.TopLayer)
                End If
        End Select

        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        'Wir machen nichts
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungTabitha
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Tabitha"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Eine Super Einheit"}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {"Raketen einschlag!"}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"", "Feuersturm"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Caulder"
''' <summary>
''' Wird zu erstellen des KO's Caulder verwendet copyright Nintendo und Intelligent System
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOCaulder
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub

    Private Sub StartwerteLaden()
        KOID = "CAULDER"
        Armee = Armeen.BH.ToString
        Musik = "Caulder"
        Bild = GetBildID()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 4
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
            Case CommanderWarsGameModi.AdvanceWarsDC
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 0
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 3
            Case CommanderWarsGameModi.CommanderWars2
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 8
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
                KORange = 3
            Case Else
                Sternkosten = 1000
                Gabekosten = 0
                SpezialgabeKosten = 8
                Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        End Select
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name

        KOLaden()
    End Sub

    Public Overrides Sub KOLaden()


        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                OffensivStärke = New Feuerkrafttabelle150
                DeffensivStärke = New Feuerkrafttabelle150
                'Dafür sinkt die Feuerkraft aber drastisch
                WetterReichweitenbonus(0) = 0
            Case Else
                OffensivStärke = Nothing
                DeffensivStärke = New Feuerkrafttabelle120
        End Select

    End Sub

    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)

    End Sub

    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWars
                EigeneEinheitenHeilen(2)
            Case CommanderWarsGameModi.CommanderWars2
                OffensivStärke = New Feuerkrafttabelle150
                DeffensivStärke = New Feuerkrafttabelle150
                If OhneFunktion = False Then
                    EigeneEinheitenHeilen(5)
                    AnimationEigene("ANDYGABE", 2)
                End If
            Case Else
                OffensivStärke = New Feuerkrafttabelle150
                DeffensivStärke = New Feuerkrafttabelle150
                If OhneFunktion = False Then
                    EigeneEinheitenHeilen(5)
                    AnimationEigene("ANDYGABE", 2)
                End If
        End Select

        GabeEingesetzt()
    End Sub
    Public Overrides Sub KOFrame()
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.AdvanceWarsDC, CommanderWarsGameModi.CommanderWars2
                Dim E As ObjektEinheit = Objektverwalter.Spielfeld.Spieler(Spieler).KOS(0).GetKOEinheit
                Dim WZeit As Integer = 4
                If Not E Is Nothing Then
                    'Caulder heilt sich
                    Objektverwalter.ZuFeldgehen(E.X, E.Y)
                    Dim R As Integer = GetKORange()
                    Dim Kreis As Integer(,) = Kreisfunktion(GetKORange)
                    For X = 0 To Kreis.GetLength(0) - 1
                        For Y = 0 To Kreis.GetLength(1) - 1
                            If Kreis(X, Y) >= 0 Then
                                If Objektverwalter.Spielfeld.OnMap(E.X - R + X, E.Y - R + Y) Then
                                    Dim E2 As ObjektEinheit = Objektverwalter.Spielfeld.Einheiten(E.X - R + X, E.Y - R + Y, E.GetMap)
                                    If Not E2 Is Nothing Then
                                        If E2.Spieler = Spieler Then
                                            'Sie wird geheilt!
                                            BackbufferSpiel.AddAnimation("ANDYGABE", WZeit, New Point(E.X - R + X, E.Y - R + Y), True, E.GetMap)
                                            WZeit += 4

                                            E2.DoDamage(-5)
                                        End If
                                    End If
                                End If
                            End If
                        Next
                    Next
                End If
            Case Else
                Dim WZeit As Integer = 4
                For Each Einheit In Objektverwalter.Spielfeld.Einheiten
                    If Not Einheit Is Nothing Then
                        If Einheit.Spieler = Spieler Then
                            BackbufferSpiel.AddAnimation("ANDYGABE", WZeit, New Point(Einheit.X, Einheit.Y), True, Einheit.GetMap)
                            WZeit += 4
                            Einheit.DoDamage(-2)
                        End If
                    End If
                Next
        End Select
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungCaulder
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Caulder"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {""}
        Stil = New String() {"Starke Truppen und Selbstheilung"}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {""}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"", "Energie Steuerung"}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region
#Region "Kein KO"
''' <summary>
''' 
''' </summary>
''' <remarks></remarks>
<Serializable()> Public Class KOKeinKO
    Inherits ObjektKO
    Public Sub New(ByVal Spieler As Integer)
        MyBase.New(Spieler, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Public Sub New(ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As Gabemodi, ByVal neuSternkosten As Integer)
        MyBase.New(Spieler, Gabefüllstand, Gabenart, neuSternkosten, KIGabeEinsatzstellen.RundenAnfang)
        StartwerteLaden()
    End Sub
    Private Sub StartwerteLaden()
        KOID = "KEINKO"
        Armee = Armeen.OS.ToString
        Musik = "Andy"
        Bild = GetBildID()
        Sternkosten = 0
        Gabekosten = 0
        SpezialgabeKosten = 0
        Gaben = Objektverwalter.KOS(Bild).KOBeschreibung.Gaben
        KOname = Objektverwalter.KOS(Bild).KOBeschreibung.Name
        KOLaden()
    End Sub
    Public Overrides Sub KOLaden()

    End Sub
    Public Overrides Sub Gabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
    End Sub
    Public Overrides Sub SpezialGabeeinsetzen(Optional ByVal OhneFunktion As Boolean = False)
    End Sub
    Public Overrides Sub KOFrame()
        If KOEinheit Is Nothing Then
            KOEinheit = New EinheitAmphibienpanzer(Spieler, -1, -1, True)
        End If
    End Sub
End Class
<Serializable()> Public Class KOBeschreibungKeinKO
    Inherits ObjektKOBeschreibung
    Public Sub New()
        Name = "Kein KO"
        Fein = ""
        Nein = ""
        Beschreibung = New String() {"Kein KO befehligt diese Armee"}
        Stil = New String() {"Kein KO befehligt diese Armee"}
        Gabebeschreibung = New String() {""}
        SpezialgabeBeschreibung = New String() {""}
        GabeKosten = 3
        Spezialgabekosten = 3
        Gaben = New String() {"", ""}
        Synergie = New Decimal() {}
        KONamen = New String() {}
        Doppelgabenamen = New String() {}
        Gabesätze = New String() {"..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..." _
                                , "..."}
        Siegsätze = New String() {"..." _
                                , "..." _
                                , "..."}
        Tauschsätze = New String() {"..." _
                                    , "..."}
        Doppelgabesätze = New DoppelGabesatz() {}
    End Sub
End Class
#End Region